<?php
// 创建TCP Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "无法创建Socket: " . socket_strerror(socket_last_error()) . "\n";
    exit;
}

// 绑定IP和端口
$ip = '0.0.0.0';
$port = 807;
if (socket_bind($socket, $ip, $port) === false) {
    echo "无法绑定Socket: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

// 监听Socket
if (socket_listen($socket) === false) {
    echo "无法监听Socket: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

echo "服务端已启动，等待客户端连接...\n";

// 接受客户端连接
$clientSocket = socket_accept($socket);
if ($clientSocket === false) {
    echo "无法接受客户端连接: " . socket_strerror(socket_last_error($socket)) . "\n";
    exit;
}

echo "客户端已连接。开始接收时间戳...\n";

// 持续接收客户端发送的时间戳并返回日期格式消息
while (true) {
    // 接收客户端发送的数据
    $data = socket_read($clientSocket, 1024);
    if ($data === false) {
        echo "读取数据错误: " . socket_strerror(socket_last_error($clientSocket)) . "\n";
        break;
    }
    $timestamp = trim($data);
    if (!is_numeric($timestamp)) { // 增加时间戳验证
        echo '接收到非法的时间戳，忽略此次请求'."\n";
        continue;
    }
    // 将时间戳转换为日期格式
    $date = @date("Y-m-d H:i:s", intval($timestamp)); // 使用@抑制可能的date()警告
    if ($date === false) { // 增加日期转换错误处理
        echo '转换时间戳到日期出错，忽略此次请求'."\n";
        continue;
    }
    // 返回日期格式消息给客户端
    socket_write($clientSocket, $date . "\n", strlen($date . "\n"));
}